#pragma once
// #include <iostream>
// using namespace std;

// int main()
// {
// 	cout<<"hello"<<endl;
// 	return 0;
// }
#include <iostream>
#include <cstdio>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <string>

static const std::string terminal = "/dev/pts/1";


// int OpenTerminal()
// {
// 	int fd=open(terminal.c_str(),O_WRONLY);
// 	if(fd<0)
// 	{
// 		std::cerr<<"open terminal error"<<std::endl;
// 		return 1;
// 	}
// 	dup2(fd,2);
// 	return 0;
// }



class Terminal
{
public:
	void Init()
	{
		 _fd = open(terminal.c_str(), O_WRONLY);
		if (_fd < 0)
		{
			std::cerr << "open terminal error" << std::endl;
			exit(1);
		}
		dup2(_fd, 2);
	}
	void Close()
	{
		close(_fd);
	}
	private:
	int _fd;
};

class TerminalGuard
{
public:
	TerminalGuard()
	{
		_terminal.Init();
	}
	~TerminalGuard()
	{
		_terminal.Close();
	}
	private:
	Terminal _terminal;
};
